package thread07;

/**
 * 保证多线程操作共享资源的安全性
 * 使用同步代码块保证多线程安全性
 * 格式
 *  synchronized(锁对象){
 *      我们一般将操作共享资源的代码放入到同步代码块中
 *  }
 *  锁对象指的是new出来的任意对象
 *  1.如果某个线程进入同步代码块，该线程会持有该锁对象，其它线程就无法在进入同步代码块同时也无法持有该锁对象
 *  2.如果某个线程走出同步代码块，该线程会释放该锁对象，此时其它某一个线程可以进入同步代码块同时可以持有该锁对象
 *  注意:
 *    所有线程享有同一个锁对象才能保证多线程操作共享资源安全性
 */
public class ThreadDemo01 {
	public static void main(String[] args) {
        Ticket t = new Ticket();
		new Thread(t).start();//模拟窗口A
		new Thread(t).start();//模拟窗口B
		new Thread(t).start();//模拟窗口C
	}
}
